<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
  <h:body>
    <ui:composition template="/template/base.xhtml">
      <ui:define name="content">
        <h:form id="profesor-form">
          <p:growl id="growl" showDetail="true" sticky="true" />
          <p:spacer />

          <p:panel header="Lista de profesores registrados">
            <p:dataTable id="dtProfesor" var="profesor"
                         value="#{profesorBean.profesores}" rows="10" paginator="true"
                         paginatorPosition="bottom"
                         paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                         rowsPerPageTemplate="5,10,15"
                         selection="#{profesorBean.profesorSelected}"
                         rowKey="#{profesor.id}" selectionMode="single"
                         emptyMessage="No se registraron profesores">

              <p:ajax event="rowSelect" listener="#{profesorBean.onRowSelect}" />

              <p:column headerText="ID">
                <h:outputText value="#{profesor.id}" />
              </p:column>
              <p:column headerText="Nombre">
                <h:outputText value="#{profesor.nombre}" />
              </p:column>
              <p:column headerText="Apellido">
                <h:outputText value="#{profesor.apellido}" />
              </p:column>
              <p:column headerText="Teléfono">
                <h:outputText value="#{profesor.telefono}" />
              </p:column>
              <p:column headerText="E-mail">
                <h:outputText value="#{profesor.email}" />
              </p:column>

              <f:facet name="footer">
                <p:commandButton process="dtProfesor" icon="ui-icon-document"
                                 value="Agregar" oncomplete="PF('dlgProfesorAdd').show()" 
                                 update="dtProfesor" />
                <p:commandButton process="dtProfesor" icon="ui-icon-pencil"
                                 value="Editar" oncomplete="PF('dlgProfesorEdit').show()"
                                 update=":form-edit:pnlGridProfesor"
                                 disabled="#{profesorBean.bloquearBotones}" />
                <p:commandButton process="dtProfesor" icon="ui-icon-trash"
                                 value="Borrar" actionListener="#{profesorBean.deleteProfesor}"
                                 update="dtProfesor" disabled="#{profesorBean.bloquearBotones}">
                  <p:confirm header="Borrar Profesor"
                             message="Estas seguro que queres borrar?" icon="ui-icon-alert" />
                </p:commandButton>
              </f:facet>
            </p:dataTable>
          </p:panel>

          <p:confirmDialog global="true" showEffect="fade"
                           hideEffect="explode">
            <p:commandButton value="Si" type="button"
                             styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
            <p:commandButton value="No" type="button"
                             styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
          </p:confirmDialog>

        </h:form>
        <p:dialog header="Agregar Profesor" id="PdglProfesorAdd"
                  widgetVar="dlgProfesorAdd" modal="true">
          <h:form id="form-add">
            <p:panelGrid columns="2">
              <p:column>
                <p:outputLabel value="Ingrese los datos"/>
                <p:panelGrid columns="2" columnClasses="column"
                             id="pnlGridAddProfesor">

                  <p:outputLabel value="Nombre" for="nombre" />
                  <p:inputText id="nombre" required="true"
                               value="#{profesorBean.nombre}" />

                  <p:outputLabel value="Apellido" for="apellido" />
                  <p:inputText id="apellido" required="true"
                               value="#{profesorBean.apellido}" />

                  <p:outputLabel value="TipoDocumento" for="tipoDocumento" />
                  <p:selectOneMenu id="tipoDocumento"
                                   value="#{profesorBean.tipoDocumento}"
                                   converter="tipoDocumentoConverter">
                    <c:forEach var="tipoDocumento"
                               items="#{tipoDocumentoBean.listDocumento}">
                      <f:selectItem itemValue="#{tipoDocumento}"
                                    itemLabel="#{tipoDocumento.descripcion}" />
                    </c:forEach>
                  </p:selectOneMenu>

                  <p:outputLabel value="Documento" for="documento" />
                  <p:inputText id="documento" value="#{profesorBean.documento}" />

                  <p:outputLabel value="Telefóno" for="telefono" />
                  <p:inputText id="telefono" value="#{profesorBean.telefono}" />

                  <p:outputLabel value="Ciudad" for="ciudad" />
                  <p:selectOneMenu id="ciudad" value="#{profesorBean.ciudad}"
                                   converter="ciudadConverter">
                    <c:forEach var="ciudad" items="#{ciudadBean.ciudades}">
                      <f:selectItem itemValue="#{ciudad}"
                                    itemLabel="#{ciudad.descripcion}" />
                    </c:forEach>
                  </p:selectOneMenu>

                  <p:outputLabel value="Dirección" for="direccion" />
                  <p:inputText id="direccion" value="#{profesorBean.direccion}" />

                  <p:outputLabel value="Email" for="email" />
                  <p:inputText id="email" value="#{profesorBean.email}" />
                </p:panelGrid>
              </p:column>
              <p:column>
                <p:outputLabel value="Seleccione las Materias"/>
                <p:dataTable id="dtMateriasSel" var="materia"
                             value="#{materiaBean.materias}"  rows="10" paginator="true"
                             paginatorPosition="bottom"
                             paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             rowsPerPageTemplate="5,10,15"
                             selection="#{materiaBean.listaMatSelec}" rowKey="#{materia}"
                             converter="materiaConverter">
                  <p:column selectionMode="multiple"
                            style="width:16px;text-align:center" />
                  <p:column headerText="Id">
                    <h:outputText value="#{materia.id}" />
                  </p:column>
                  <p:column headerText="Descripcion">
                    <h:outputText value="#{materia.descripcion}" />
                  </p:column>

                </p:dataTable>
              </p:column>
            </p:panelGrid>
            <p:panel style="alignment-adjust:central">
              <p:commandButton process="dtMateriasSel" value="Guardar Profesor"
                               action="#{profesorBean.saveProfesor}"
                               style="text-align:center; float:center"
                               onclick="dglProfesorAdd.hide();" oncomplete=""
                               update=":profesor-form:dtProfesor,:profesor-form:growl"  />
            </p:panel>
          </h:form>
        </p:dialog>

        <p:dialog header="Profesor seleccionado" id="PdglProfesorEdit"
                  widgetVar="dlgProfesorEdit" modal="true">
          <h:form id="form-edit">
            <p:panelGrid columns="2">
              <p:column>
                <p:outputLabel value="Ingrese los datos"/>
                <p:panelGrid columns="2" columnClasses="column"
                             id="pnlGridProfesor">

                  <p:outputLabel value="Nombre" for="nombre" />
                  <p:autoComplete id="nombre" required="true"
                                  value="#{profesorBean.nombre}" />

                  <p:outputLabel value="Apellido" for="apellido" />
                  <p:autoComplete id="apellido" required="true"
                                  value="#{profesorBean.apellido}" />

                  <p:outputLabel value="TipoDocumento" for="tipoDocumento" />
                  <p:selectOneMenu id="tipoDocumento"
                                   value="#{profesorBean.tipoDocumento}"
                                   converter="tipoDocumentoConverter">
                    <c:forEach var="tipoDocumento"
                               items="#{tipoDocumentoBean.listDocumento}">
                      <f:selectItem itemValue="#{tipoDocumento}"
                                    itemLabel="#{tipoDocumento.descripcion}" />
                    </c:forEach>
                  </p:selectOneMenu>

                  <p:outputLabel value="Documento" for="documento" />
                  <p:autoComplete id="documento" value="#{profesorBean.documento}" />


                  <p:outputLabel value="Telefóno" for="telefono" />
                  <p:autoComplete id="telefono" value="#{profesorBean.telefono}" />

                  <p:outputLabel value="Ciudad" for="ciudad" />
                  <p:selectOneMenu id="ciudad" value="#{profesorBean.ciudad}"
                                   converter="ciudadConverter">
                    <c:forEach var="ciudad" items="#{ciudadBean.ciudades}">
                      <f:selectItem itemValue="#{ciudad}"
                                    itemLabel="#{ciudad.descripcion}" />
                    </c:forEach>
                  </p:selectOneMenu>

                  <p:outputLabel value="Email" for="email" />
                  <p:autoComplete id="email" value="#{profesorBean.email}" />

                  <p:outputLabel value="Dirección" for="direccion" />
                  <p:autoComplete id="direccion" value="#{profesorBean.direccion}" />
                </p:panelGrid>
              </p:column>
              <p:column>
                <p:outputLabel value="Seleccione las Materias"/>
                <p:dataTable id="dtMatProfesor" var="materia"
                             value="#{materiaBean.materias}"  rows="10" paginator="true"
                             paginatorPosition="bottom"
                             paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             rowsPerPageTemplate="5,10,15" 
                             selection="#{profesorBean.profesor.materiaList}" rowKey="#{materia}" 
                             converter="materiaConverter" >

                  <p:column selectionMode="multiple"
                            style="width:16px;text-align:center" />

                  <p:column headerText="Id">
                    <h:outputText value="#{materia.id}" />
                  </p:column>
                  <p:column headerText="Descripcion">
                    <h:outputText value="#{materia.descripcion}" />
                  </p:column>
                </p:dataTable>
              </p:column>
            </p:panelGrid>
            <p:panel style="alignment-adjust:central">
              <p:commandButton process="dtMatProfesor" value="Actualizar"
                               action="#{profesorBean.editProfesor}"
                               style="text-align:center; float:center"
                               onclick="dlgProfesorEdit.hide();" oncomplete=""
                               update=":profesor-form:dtProfesor,:profesor-form:growl" />
            </p:panel>
          </h:form>
        </p:dialog>
      </ui:define>
    </ui:composition>
  </h:body>
</html>
